Apache Ranger简介
Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。
- 丰富的组件支持(HDFS,HBASE, HIVE, YARN, KAFKA,STORM)
- 提供了细粒度级权限控制( hive列级别)
- 权限控制插件式,统一方便的策略管理
- 支持审计日志,记录各种操作的日志,提供统一的查询接口和界面
- 支持和kerberos的集成
- 提供了Rest接口供二次开发
为什么选择Ranger
多组件支持,基本覆盖我们现有技术栈的组件
支持审计日志,可以查找到用户操作明细,方便问题排查反馈
拥有自己的用户体系,方便和其他系统集成,提供接口调用
Ranger的基本架构
RangerAdmin
- 对于各服务策略进行规划,分配相应的资源给相应的用户或组
- 以RESTFUL形式提供策略的增删改查接口
- 统一查询和管理页面
Service Plugin
- 嵌入到各系统执行流程中,定期从RangerAdmin拉取策略
- 根据策略执行访问决策树
- 记录访问审计
Ranger的权限模型
用户:由User或Group来表达
资源:不同组件有不同的资源,如HDFS的Path, Hive的DB\TABLE
策略: Service可以有多条Policy,组件不同, Policy授权模型不同
HDFS例子
- HDFS启动时加载Ranger插件,并从Admin拉取权限策略
- 用户访问请求到达NameNode,进行权限验证
- 验证后处理访问请求,并记录审计日志
Hive例子
- HiveServer2启动时加载Ranger插件,并从Admin拉取权限策略
- 用户SQL查询请求到达HiveServer2,在Compile阶段进行权限验证
- 验证后处理访问请求,并记录审计日志
Yarn例子
- ResourceManger启动时加载Ranger插件,从Admin拉取权限策略
- 用户提交任务到ResourceManager,在解析任务阶段进行权限验证
- 验证后提交任务,并记录审计日志
Apache Ranger安装
1、下载 http://ranger.apache.org/download.html
同时也可以在githup上搜索Ranger 下载源码
2、前置环境
- JDK 运行RangerAdmin RangerKMS
- RDBMS 1.存储授权策略 2.存储Ranger 用户/组 3.存储审核日志
- Solr(可选) 存储审核日志
- HDFS(可选) 存储审核日志
- Kerberos(可选) 确保所有请求都被认证
3、Apache Ranger安装部署
下载Apache Ranger源码,进行编译
大家可以访问Ranger官网下载对应版本的Ranger安装包,本课程使用的是Ranger-1.2.0版本,当前最新版本为2.0.0。
下载mysql的java驱动包mysql-connector-java编译打包
下载完成之后,解压缩,对源码进行编译打包,生成安装包。1
2
3
4
5
6tar zxvf apache-ranger-1.2.0.tar.gz
cd apache-ranger-1.2.0
mvn -DskipTests=true clean compile package install assembly:assembly
#编译完成后可在target下看到一系列的安装包,
ls target部署到指定位置
编译完成之后,对安装包进行解压,并且移动到指定安装目录。1
2
3
4tar zxvf ranger-1.2.0-admin.tar.gz -C ../app
ln -s ranger-1.2.0-admin ranger
# 移动mysql驱动包到ranger目录 也可以不移动,下面配置中直接指定路径
cp mysql-connector-java-5.1.38.jar ../app/ranger/配置install.properties,执行安装操作
Ranger的安装非常简单,我们只需要配置它自带的install.properties文件即可,配置完成之后执行安装命令会自动进行安装,无需其他配置。我们安装的为简单版本的ranger,没有开启其他功能,比如Kerberos、审计日志等等。我们来看一下install.properties需要关注的内容:
install.properties1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35# 指定Ranger使用的数据库类型,我们这里使用mysql
DB_FLAVOR=MYSQL
# 指定数据库driver的path
SQL_CONNECTOR_JAR=/soft/home/ranger-1.2.0-admin/mysql-connector-java-5.1.22-bin.jar
# 指定数据库root用户链接信息
db_root_user=root
db_root_password=root
# select user from mysql.user where user='root' and host='localhost'必须可以查询到结果
db_host=localhost
# 指定Ranger数据库名称及用户信息
db_name=ranger
db_user=root
db_password=root
# 设置一下相关秘钥,后续登录会使用到
#PLEASE NOTE :: Password should be minimum 8 characters with min one alphabet and one numeric.
# 密码至少8个字符,至少一个字母和一个数字
rangerAdmin_password=root@123
rangerTagsync_password=root@123
rangerUsersync_password=root@123
keyadmin_password=root@123
# 审计日志配置成数据库
audit_store=db
audit_db_user=root
audit_db_name=ranger
audit_db_password=root
# 策略管理使用默认配置即可
policymgr_external_url=http://localhost:6080
policymgr_http_enabled=true
policymgr_https_keystore_file=
policymgr_https_keystore_keyalias=rangeradmin
policymgr_https_keystore_password=
# unix用户及用户组使用默认配置即可
unix_user=ranger
unix_user_pwd=ranger
unix_group=ranger使用root来执行setup命令
配置完成之后,执行./setup.sh进行安装。启动服务
我们启动Ranger-Admin服务,启动完成之后可以通过界面进行登录访问。1
2
3
4
5
6
7ranger-admin start
#查看服务是否启动
jps -m
18472 Jps -m
18394 EmbeddedServer验证服务状态
我们访问http://ranger_host:6080端口,可以看到我们ranger的登录界面,登录的用户名密码为admin/root@123(我们前面配置文件中配置的密码)。
Ranger-HDFS-Plugin安装
- 解压缩安装包,并移动到指定目录
1
2tar zxvf ranger-1.2.0-hdfs-plugin.tar.gz -C ../app/
ln -s ranger-1.2.0-hdfs-plugin ranger-hdfs - 配置install.properties
1
2
3
4
5
6
7
8
9
10
11# Ranger Admin地址
POLICY_MGR_URL=http://localhost:6080
# 服务名词 很重要,后面在ranger-admin添加时需要保持一致
REPOSITORY_NAME=kun_hdfs
# 安装目录,指定hadoop home
COMPONENT_INSTALL_DIR_NAME=/home/hadoop/app/hadoop
# 用户和用户组,我的环境默认使用hadoop用户启动相关服务
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop
#其他功能不开启,保持默认即可 hdfs默认端口是8020,如果更改需要做相应的
端口调整 - 执行安装命令
1
2
3root用户执行
./enable-hdfs-plugin.sh - 重启一下hdfs集群
- Ranger-Admin界面添加Services
登录Ranger Admin,添加HDFS Service
6. 验证
1 | [root@hadoop001 ~]# hdfs dfs -put anaconda-ks.cfg /my_test |
Ranger-Hive-Plugin安装
解压缩安装包,并移动到指定目录
1
2tar zxvf ranger-1.2.0-hive-plugin.tar.gz
mv ranger-1.2.0-hive-plugin /soft/配置install.properties
1
2
3
4
5
6
7
8
9
10
11
12# Ranger Admin地址
POLICY_MGR_URL=http://localhost:6080
# 服务名词 很重要,后面在ranger-admin添加时需要保持一致
REPOSITORY_NAME=kun_hive
# 安装目录,指定hive home
COMPONENT_INSTALL_DIR_NAME=/root/app/hive
# 用户和用户组,我的环境默认使用hadoop用户启动相关服务
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop
#其他功能不开启,保持默认即可
执行安装命令
./enable-hive-plugin.sh重启hiveserver2
1
hive --service hiveserver2 &
Ranger-Admin界面添加Services
验证
利用hadoop用户来登录查询发现无权限